//package test;
//
//class Node {
//    int val;
//    Node next;
//
//    public Node() {
//    }
//
//    public Node(int val) {
//        this.val = val;
//    }
//
//    public Node(int val, Node next) {
//        this.val = val;
//        this.next = next;
//    }
//}
//
//public class MyLinkedList {
//    private Node head;
//
//    public void createList() {
//        Node node = new Node(1);
//        Node node1 = new Node(2);
//        Node node2 = new Node(3);
//        Node node3 = new Node(4);
//        node.next = node1;
//        node1.next = node2;
//        node2.next = node3;
//        this.head = node;
//    }
//
//    public void show() {
//        Node cur = head;
//        while (cur != null) {
//            System.out.print(cur.val + " ");
//            cur = cur.next;
//        }
//        System.out.println();
//    }
//
//    public int size() {
//        Node cur = head;
//        int count = 0;
//        while (cur != null) {
//            count++;
//            cur = cur.next;
//        }
//        return count;
//    }
//
//    public boolean contains(int key) {
//        Node cur = head;
//        while (cur != null) {
//            if (cur.val == key) {
//                return true;
//            }
//            cur = cur.next;
//        }
//        return false;
//    }
//
//    public void addFirst(int data) {
//        Node node = new Node(data);
//        if (head == null) {
//            head = node;
//        }
//        node.next = head;
//        head = node;
//    }
//
//    public void addLast(int data) {
//        Node node = new Node(data);
//        if (head == null) {
//            head = node;
//        }
//        Node cur = head;
//        while (cur.next != null) {
//            cur = cur.next;
//        }
//        cur.next = node;
//    }
//
//    public Node searchNode(int index) {
//        Node cur = head;
//        if (head == null) {
//            System.out.println("没有你要找的节点");
//            return null;
//        }
//        int count = 0;
//        while (cur != null) {
//            if (count == index) {
//                return cur;
//            }
//            count++;
//            cur = cur.next;
//        }
//        return null;
//    }
//
//    public Node searchPreNode(int data) {
//        Node cur = head;
//        while (cur.next != null) {
//            if (cur.next.val == data) {
//                return cur;
//            }
//            cur = cur.next;
//        }
//        return null;
//    }
//
//    public void addIndex(int index, int data) {
//        if (index < 0 || index > size() - 1) {
//            System.out.println("下标不合法！");
//        }
//        if (index == 0) {
//            addFirst(data);
//        }
//        if (index == size() - 1) {
//            addLast(data);
//        }
//        int count = 0;
//        Node cur = head;
//        while (cur != null) {
//            if (count == index && count != 0 && count != size() - 1) {
//                Node node = new Node(data);
//                Node pre = searchPreNode(cur.val);
//                node.next = cur;
//                pre.next = node;
//            }
//            cur = cur.next;
//            count++;
//        }
//    }
//
//    public boolean removeAllKey(int val) {
//        if (head == null) {
//            System.out.println("链表为空，没有你要删除的元素");
//            return false;
//        }
//        if (head.val == val) {
//            head = head.next;
//        }
//        Node cur = head;
//        Node pre = head.next;
//        while (cur != null) {
//            if (cur.val == val) {
//                pre.next = cur.next;
//                cur = cur.next;
//            } else {
//                pre = cur;
//                cur = cur.next;
//            }
//        }
//        return true;
//    }
//
//    public void remove(int val) {
//        if (head == null) {
//            System.out.println("没有你要删除的节点");
//        }
//        if (head.val == val) {
//            head = head.next;
//        }
//        Node cur = head;
//        while (cur != null) {
//            if (cur.val == val) {
//                Node pre = searchPreNode(cur.val);
//                pre.next = cur.next;
//            }
//            cur = cur.next;
//        }
//    }
//
//    public void clear() {
//        while (head != null) {
//            Node curNext = head.next;
//            head.next = null;
//            head = curNext;
//        }
//    }
//
//    public static void main(String[] args) {
//        MyLinkedList myLinkedList = new MyLinkedList();
//        myLinkedList.createList();
//        myLinkedList.show();
//        System.out.println(myLinkedList.size());
//        System.out.println(myLinkedList.contains(1));
//        System.out.println(myLinkedList.contains(5));
//        myLinkedList.addFirst(5);
//        myLinkedList.show();
//        myLinkedList.addLast(6);
//        myLinkedList.show();
//        System.out.println(myLinkedList.searchNode(0).val);
//        myLinkedList.addIndex(0, 7);
//        myLinkedList.show();
//        myLinkedList.addIndex(3, 9);
//        myLinkedList.show();
//        System.out.println(myLinkedList.searchPreNode(5).val);
//        myLinkedList.remove(9);
//        myLinkedList.show();
//        myLinkedList.addLast(5);
//        myLinkedList.addLast(5);
//        myLinkedList.show();
//        myLinkedList.removeAllKey(5);
//        myLinkedList.show();
//        System.out.println("hello");
//        myLinkedList.clear();
//        myLinkedList.show();
//        System.out.println("hello");
//
//    }
//}
